using System;
using System.Collections.Generic;
using System.Text;
using NBear.Common.Design;

namespace PerformanceComparison.NBear.EntityDesigns
{
    [MappingName("Categories")]
    public interface Category : Entity
    {
        [PrimaryKey]
        int CategoryID { get; }
        [SqlType("nvarchar(15)")]
        string CategoryName { get; set; }
        [SqlType("ntext")]
        string Description { get; set; }
        byte[] Picture { get; set; }
    }

    [MappingName("Customers")]
    public interface Customer : Entity
    {
        [PrimaryKey]
        [SqlType("nchar(5)")]
        string CustomerID { get; set; }
        [SqlType("nvarchar(40)")]
        string CompanyName { get; set; }
        [SqlType("nvarchar(30)")]
        string ContactName { get; set; }
        [SqlType("nvarchar(30)")]
        string ContactTitle { get; set; }
        [SqlType("nvarchar(60)")]
        string Address { get; set; }
        [SqlType("nvarchar(15)")]
        string City { get; set; }
        [SqlType("nvarchar(15)")]
        string Region { get; set; }
        [SqlType("nvarchar(10)")]
        string PostalCode { get; set; }
        [SqlType("nvarchar(15)")]
        string Country { get; set; }
        [SqlType("nvarchar(24)")]
        string Phone { get; set; }
        [SqlType("nvarchar(24)")]
        string Fax { get; set; }
    }

    [MappingName("Products")]
    public interface Product : Entity
    {
        [PrimaryKey]
        int ProductID { get; }
        [SqlType("nvarchar(40)")]
        string ProductName { get; set; }
        int? SupplierID { get; set; }
        int? CategoryID { get; set; }
        [SqlType("nvarchar(20)")]
        string QuantityPerUnit { get; set; }
        decimal? UnitPrice { get; set; }
        short? UnitsInStock { get; set; }
        short? UnitsOnOrder { get; set; }
        short? ReorderLevel { get; set; }
        bool Discontinued { get; set; }
    }

}
